<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件


function get_id()
{
    $uuid = md5(uniqid(mt_rand(), true));
    return $uuid;
}

/**
 * 密码加密方法
 * @param string $pw 要加密的原始密码
 * @param string $authCode 加密字符串
 * @return string
 */
function md5_password($pw, $authCode = '')
{
    if (empty($authCode)) {
        $authCode = 'qMhsKe5rvotHLjcmvl';
    }
    $result = "###" . md5(md5($authCode . $pw));
    return $result;
}



/**
 * 随机字符串生成
 * @param int $len 生成的字符串长度
 * @return string
 */
function random_string($len = 6)
{
    $chars = [
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
        "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
        "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
        "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
        "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
        "3", "4", "5", "6", "7", "8", "9"
    ];
    $charsLen = count($chars) - 1;
    shuffle($chars);    // 将数组打乱
    $output = "";
    for ($i = 0; $i < $len; $i++) {
        $output .= $chars[mt_rand(0, $charsLen)];
    }
    return $output;
}


/**
 * 后台API接口数据输出
 * @param $status  业务状态码
 * @param $message 信息提示
 * @param array $data 数据
 * @return \think\response\Json
 */
function show($status, $message, $data)
{
    $data = [
        'status' => $status,
        'message' => $message,
        'data' => $data
    ];
    return json($data);
}

/**
 * 后台API接口数据输出
 * @param $status  业务状态码
 * @param $message 信息提示
 * @param array $data 数据
 * @param int $total 数据总数量，即共多少条数据
 * @return \think\response\Json
 */
function showTotal($status, $message, $data, $total)
{
    $data = [
        'status' => $status,
        'message' => $message,
        'data' => $data,
        'total' => $total
    ];
    return json($data);
}

function getAreaName($data) {
    if(!$data) {
        return '';
    }
    return \app\admin\model\Area::where('id',$data)->value('name');
}



/**
 * 获取客户端IP
 */
function get_IP()
{
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
        $ip = getenv("HTTP_CLIENT_IP");
    } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){
        $ip = $_SERVER['REMOTE_ADDR'];
    } else {
        $ip = "unknown";
    }

    return  $ip;
}

/**
 * 返回带参数的URL
 *
 * @param $url
 * @return string
 */
function fullUrl($url)
{
    $uriArr = explode('/', $url);
    $params = [];
    if (count($uriArr) >= 3) {
        foreach ($uriArr as $key => $param) {
            if (in_array($key, [0, 1, 2])) {
                continue;
            }
            if ($key % 2 != 0 && isset($uriArr[$key + 1])) {
                $params[$param] = $uriArr[$key + 1];
            }

        }

        return url("$uriArr[0]/$uriArr[1]/$uriArr[2]", $params);
    }

    return url($url);
}

/**
 * 把三维数组转化成二维数组
 */
function array_merge_rec($array)
{
    // 定义一个新的数组
    $newArray = array();
    // 遍历当前数组的所有元素
    foreach ($array as $item) {
        if (is_array($item)) {
            // 如果当前数组元素还是数组的话，就递归调用方法进行合并
            array_merge_rec($item);
            // 将得到的一维数组和当前新数组合并
            $newArray = array_merge($newArray, $item);
        } else {
            // 如果当前元素不是数组，就添加元素到新数组中
            $newArray[] = $item;
        }
    }
    // 修改引用传递进来的数组参数值
    $array = $newArray;

    return $array;
}

/**
 * 二维数组根据某个元素去重
 */
function array_unset($arr, $key){
    // 建立一个目标数组
    $res = array();
    foreach ($arr as $value) {
        // 查看有没有重复项
        if(isset($res[$value[$key]])){
            //有：销毁
            unset($value[$key]);
        }else{
            $res[$value[$key]] = $value;
        }
    }

    return $res;
}


/**
 * 获取状态 （通用）
 * @return array
 */
function get_status()
{
    return [
        '1' => '是',
        '2' => '否'
    ];
}

// 显示状态 （通用）
function show_status($id)
{
    $status = get_status();

    return $status[$id];
}

/**
 * 性别
 * @return array
 */
function get_gender()
{
    return [
        '0' => '未知',
        '1' => '男',
        '2' => '女'
    ];
}

// 显示性别
function show_gender($genderId)
{
    $genders = get_gender();

    return $genders[$genderId];
}

/**
 * 文化程度
 * @return array
 */
function get_education()
{
    return [
        '1' => '博士',
        '2' => '硕士',
        '3' => '研究生',
        '4' => '本科',
        '5' => '专科',
        '6' => '高中',
        '7' => '初中',
    ];
}

// 显示文化程度
function show_education($id)
{
    $educations = get_education();

    return $educations[$id];
}


//文件通知分类
function get_policyType(){
    $category = db('category')->where('c_type',1)->order('sort')->select();
    return $category;
}

//显示政策公开分类
function show_policyType($id){
    $category = db('category')->where('id',$id)->find();
    return $category['name'];
}

// 办事指南分类
function get_guidetoaffairsType(){
    return [
        '1' => '城乡建设',
        '2' => '住房管理',
    ];
}

// 显示办事指南分类
function show_guidetoaffairsType($id){
    $typeList = get_guidetoaffairsType();
    return $typeList[$id];
}

/**
 * 建党要闻分类
 * @return array
 */
function get_microclass_category()
{
    return [
        '1' => '政策法规',
        '2' => '反腐倡廉',
        '3' => '管理要闻'
    ];
}

// 显示建党要闻分类
function show_microclass_category($id)
{
    $category = get_microclass_category();

    return $category[$id];
}

/**
 * 学习中心分类
 * @return array
 */
function get_microclass_type()
{
    return [
        '1' => '党建党章',
        '2' => '习近平讲话',
        '3' => '十九大精神',
        '4' => '三会一课',
        '5' => '治党治国',
        '6' => '党史',
    ];
}

// 显示学习中心分类
function show_microclass_type($id)
{
    $category = get_microclass_type();

    return $category[$id];
}

//根据二维数组某个字段的值查找数组

function filter_by_value ($array, $index, $value){
    $newarray = [];
    if(is_array($array) && count($array)>0)
    {
        foreach(array_keys($array) as $key){
            $temp[$key] = $array[$key][$index];

            if ($temp[$key] == $value){
                $newarray[$key] = $array[$key];
            }
        }
    }
    return $newarray;
}

/**
 * 百度地图BD09坐标---->中国正常GCJ02坐标
 * 腾讯地图用的也是GCJ02坐标
 * @param double $lat 纬度
 * @param double $lng 经度
 * @return array();
 */
function Convert_BD09_To_GCJ02($lat,$lng){
    $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
    $x = $lng - 0.0065;
    $y = $lat - 0.006;
    $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
    $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
    $lng = $z * cos($theta);
    $lat = $z * sin($theta);
    return array('lng'=>$lng,'lat'=>$lat);
}